home *** CD-ROM | disk | FTP | other *** search
/ 64'er / 64ER_CD.iso / 86xx / 8605.d64 / epson plotter (.txt) < prev    next >
Commodore BASIC  |  1995-03-30  |  5KB  |  143 lines

  1. 1 REM *********************************
  2. 2 REM *                               *
  3. 3 REM *         EPSON PLOTTER         *
  4. 4 REM *                               *
  5. 5 REM *   C-64 + EPSON RX 80 (F/T+)   *
  6. 6 REM *       (+ INTERFACE)           *
  7. 7 REM *                               *
  8. 8 REM *********************************
  9. 9 REM *                               *
  10. 10 REM*         VOLKER RAUM           *
  11. 11 REM*     NOETHERSTRASSE 20A        *
  12. 12 REM*        8520 ERLANGEN          *
  13. 13 REM*         09131/65511           *
  14. 14 REM*                               *
  15. 15 REM*********************************
  16. 16 :
  17. 17 :
  18. 30 REM "[147] = SHIFT+CLR/HOME
  19. 32 [143] " = CURSOR DOWN
  20. 34 REM "[154] = C= + 7
  21. 36 [143] " = CTRL + 7
  22. 38 REM "[157] = CURSOR LEFT
  23. 40 [139][194](49152)[179][177]165[167][147]"PLOTTER MASCH",8,1:[143] LADEN DRUCKERAUSGABE
  24. 42 [151]53281,6
  25. 44 [158]49289 :[143] LOESCHEN DES AUSGABEPUFFERS
  26. 46 [156]
  27. 48 [153]"LOADCONT               PLOTTER "
  28. 50 [153]"         C-64 <-> RX-80 (F/T)"
  29. 52 [153]"   EINE BEL. FUNKTION F(X) WIRD AUF"
  30. 54 [153]"       DEM DRUCKER AUSGEDRUCKT."
  31. 56 [133]" F(X) = ";F$:[139]F$[178]""[167]74:[143] EINGABE DER FUNKTION
  32. 58 [153]"LOAD10000 DEFFNF(X)=";F$
  33. 60 [153]"10010 F$="[199](34);F$;[199](34)
  34. 62 [153]"GOTO74
  35. 64 POKE631,19:POKE632,13:POKE633,13:POKE634,13:POKE198,4:END
  36. 66 REM
  37. 68 REM FUNKTION IN DEFFNF EINSETZEN UND F$ ZURUECKSETZEN
  38. 70 REM *** PROGRAMMIERTER DIREKTMODUS ***
  39. 72 REM
  40. 74 DIM SW(200):REM SCHARPARAMETER
  41. 76 GOSUB 10000:PRINT"[154]":REM DEFFNF AUSFUEHREN
  42. 78 PRINT"[147] F(X) = ";F$
  43. 80 PRINT" ANGABE DES DEFINITIONSBEREICHES :"
  44. 82 INPUT" XA,XE :   -5,5       [157][157][157][157][157][157][157][157][157][157][157][157][157]";XA,XE
  45. 83 IFXA>XE THENPRINT"[145][145]";:GOTO82
  46. 84 INPUT" YA,YE :   -5,5       [157][157][157][157][157][157][157][157][157][157][157][157][157]";YA,YE
  47. 85 IFYA>YE THENPRINT"[145][145]";:GOTO84
  48. 86 REM DEFINITIONS UND WERTEBEREICH VON F(X)
  49. 88 PRINT" AUFLOESUNG Y-RICHTUNG :"
  50. 90 PRINT" 0) 480 EINZELPUNKTE"
  51. 92 PRINT" 1) 960 EINZELPUNKTE"
  52. 94 PRINT" 2) 960 EINZELPUNKTE DOPPELTE GESCH."
  53. 96 PRINT" 3) 1920 EINZELPUNKTE "
  54. 98 PRINT" 4) 640 EINZELPUNKTE "
  55. 100 PRINT" 5) 720 EINZELPUNKTE "
  56. 102 INPUT" AUFLOESUNG :  0[157][157][157]";A1
  57. 104 IF A1=0THENAF=480
  58. 106 IF A1=1THENAF=960
  59. 108 IF A1=2THENAF=960
  60. 110 IF A1=3THENAF=1920
  61. 112 IF A1=4THENAF=640
  62. 114 IF A1=5THENAF=720:A1=6
  63. 116 IFA1>5GOTO102
  64. 118 POKE2,A1
  65. 120 REM
  66. 122 REM AUFLOESUNG FUER DRUCKER EINGEBEN (Y-RICHTUNG)
  67. 124 REM UEBERGABE DIESER AUFLOESUNG AN DAS MASCH.PROG.
  68. 126 REM
  69. 128 PRINT"[147] F(X) = "F$
  70. 130 PRINT" BREITE DER X-ACHSE AUF DEM DRUCKER"
  71. 132 PRINT" IN PUNKTEN"
  72. 134 INPUT" AUFLOESUNG :  480[157][157][157][157][157]";A2
  73. 135 A2=A2-1
  74. 136 REM ANGABE DER LAENGE DES AUSDRUCKS A2/8=ZEICHEN
  75. 138 INPUT"[147] IST F(X) EINE FUNKTIONENSCHAR   N[157][157][157]";FS$
  76. 140 IF FS$="N"THEN150
  77. 142 SC=1:PRINT
  78. 144 PRINT" A("SC")= ";:INPUT GF$
  79. 146 IFGF$="ENDE"THEN150
  80. 148 SW(SC)=VAL(GF$):SC=SC+1:GOTO144
  81. 150 REM FALLS SCHAR,DANN ANGABE DER PARAMETER
  82. 152 DY=ABS(YE-YA)/AF:REM 1PUNKT=?X
  83. 154 DX=ABS(XE-XA)/A2:REM SCHRITTWEITE
  84. 156 REM EINHEITEN DER X-UND Y-ACHSE
  85. 158 LX=(-YA*AF/(YE-YA))
  86. 160 LY=INT((-XA*A2/(XE-XA))+.5)+1
  87. 162 IFLX<0ORLX>480 THENLX=-1
  88. 164 IFLY<0ORLY>480 THENLY=-1
  89. 166 IFLX=-1THEN172
  90. 168 REM FESTLEGUNG DER LAGE DER ACHSEN
  91. 170 FORI=LYTO1STEP-30:OF=I:NEXT:REM BEGINN DER SKALENEINTEILUNG
  92. 172 REM START DES PLOTTENS
  93. 174 REM ******************
  94. 176 OPEN1,4:PRINT#1,CHR$(27);"3";CHR$(20);
  95. 178 PRINT#1,"F(X)="F$:PRINT#1
  96. 180 PRINT#1,"DX="30*DX"      DY="30*DY:PRINT#1
  97. 182 PRINT#1,"XA,XE = ("XA","XE")":PRINT#1
  98. 184 PRINT#1,"YA,YE = ("YA","YE")":PRINT#1
  99. 186 IFFS$="J"THENPRINT#1,"A = ("SW(1);
  100. 188 IFFS$="J"THENFORI=2TOSC-1:PRINT#1,","SW(I);:NEXT:PRINT#1,")"
  101. 190 REM AUSDRUCK DER FUNKTION,DEFINITIONS,WERTEBEREICH,EINHEITEN DER X,Y ACHSE
  102. 192 REM GEGEBENFALLS SCHARPARAMETER
  103. 194 CMD1:REM AUSGABE KOMPLETT AUF DRUCKER,NOTWENDIG FUER MASCH.PROG.
  104. 196 BY=0:KU=-1:CO=XA-DX:FORI=1TOA2STEP8:BI=256:REM BEGIN DER PLOTSVCHLEIFE
  105. 198 IFFS$="J"THENFORAQ=1TOSC-1:REM FALLS SCHAR DANN ALLE PARAMETER
  106. 200 FORU=ITOI+7:CO=CO+DX:BI=BI/2:REM SCHRITTE ZU 8 FUER AUSDRUCK AUF DRUCKER
  107. 202 IFFS$="J"THENA=SW(AQ):REM SCHARPARAMETER
  108. 204 POKE768,112:POKE769,168:YI=FNF(CO):REM AUSSCHALTEN DER FEHLERMELDUNG
  109. 206 REM UND BESTIMMUNG DES FUNKTIONSWERTES
  110. 208 RY=INT(((YI-YA)*(AF-1)/(YE-YA))+.5):REM UMRECHNEN DES FUNKTIONSWERTES
  111. 210 POKE768,139:POKE769,227:REM FEHLERMELDUNG FREI GEBEN
  112. 212 IFRY<0ORRY>AFTHEN216:REM FUNKTIONSPUNKT EINZEICHNEN ?
  113. 214 POKERY+49920,PEEK(49920+RY)ORBI:REM PUNKT AN AUSGABEPUFFER GEBEN
  114. 216 IFKU>=0THENKU=KU+1:REM ZAEHLER FUER EINTEILUNG DER X-ACHSE
  115. 218 IFU=LYTHENBY=BI
  116. 220 IFU=OFTHENKU=0
  117. 222 IF(KU/30)=INT(KU/30)THENVR=1:PO=BI:REM SKALENEINTEILUNG ?
  118. 224 NEXTU:IFFS$="J"THENKU=KU-8:CO=CO-8*DX:BI=256:NEXTAQ:CO=CO+8*DX:KU=KU+8
  119. 226 REM 8PUNKTE FERTIG MACHEN,DANN EV. ALLE SCHARPARAMETER DURCHLAUFEN LASSEN
  120. 228 IFLX=-1THENSYS49152:NEXTI:GOTO240:REM AUSGABE AUF DRUCKER
  121. 230 POKE49920+LX,255:REM X-ACHSE SETZEN
  122. 232 IFVR=1THENFORQ=-1TO1:POKE49920+LX+Q,PEEK(49920+LX+Q)ORPO:NEXT:VR=0
  123. 234 REM SKALENEINTEILUNG
  124. 236 IFBY<>0THENGOSUB244:REM Y-ACHSE AUSGEBEN
  125. 238 SYS49152:NEXTI:REM DRUCKEN
  126. 240 PRINT#1:CLOSE1:REM KANAL SCHLIESSEN
  127. 242 GOTO46:REM NEUE FUNKTION
  128. 244 REM
  129. 246 FORV=49920TO49920+AF:POKEV,(PEEK(V) OR BY):NEXTV
  130. 248 IFLX=-1THENRETURN
  131. 250 B1=BY/2:IFB1<1THENB1=0
  132. 252 B2=BY/4:IFB2<1THENB2=0
  133. 254 B3=BY*2:IFB3>128THENB3=0
  134. 256 B4=BY*4:IFB4>128THENB4=0
  135. 258 AG=B1+B2+B3+B4
  136. 260 FORZX=0TO(AF-LX)STEP30:POKE49920+LX+ZX,PEEK(49920+LX+ZX)ORAG:NEXT
  137. 262 FORZX=0TOLXSTEP30:POKE49920+LX-ZX,PEEK(49920+LX-ZX)ORAG:NEXT
  138. 264 BY=0:RETURN
  139. 266 REM Y-ACHSE AUSGEBEN UND SKALENEINTEILUNG VORNEHMEN
  140. 10000 DEFFNF(X)=X
  141. 10010 F$="X"
  142. 10020 RETURN
  143.